/*
* TFModelImpl.h
*
* Implements TFModelInterface
*
* Author: Rapid Dojo
* Date: Oct 19, 2007
*/

#include "TFModelInterface.h"
#include <vector>

using std::vector;

class TFModelImpl: public TFModelInterface 
{

public:

	TFModelImpl ();
	virtual ~TFModelImpl ();
	void InitializeAll();

	TF_GAME_MODE GetGameMode();
	void SetGameMode(TF_GAME_MODE newMode);

	void GetMenuModel(TFMenu *& oMenuModel);
	
	void RandomPlaceBarricade(TF_PLAYERS player);
	void RandomPlaceFlagBarricade(TF_PLAYERS player);
	void RandomSetup(TF_PLAYERS player);

	int  PiecesToPlace();
	void AddPieceToPlace(TFGamePiece* piece);
	void NewGame();
	bool CanPlacePiece(TF_PIECE_STATE piece);
	void PiecePlaced(TF_PIECE_STATE piece);	

	HRESULT RoomForBarricade();

	HRESULT CanFortifyFlag();

	HRESULT RoomForTroop();

};
